/********************************************************
 * C 中是不能够将数组作为函数的参数进行传递的，
 * 无论如何，你只能传递指向数组初始元素的指针。
 *
 * 在声明函数形参时，作为类型分类的数组，被解读为指针。
 *
 * void func(int a[])
 * {
 *     …
 * }
 *
 * 可以被自动的解读为
 *
 * void func(int *a)
 * {
 *     …
 * }
 *
 * 就算你定义了数组的元素个数，也会被无视。
 *
 * 只有在这种情况下，int a[] 和 int *a 才是一回事，
 * 否则，数组和指针就是两个不相干的东西，
 * 至于 p[i] 它只是 *(p + i) 的语法糖仅此而已。
 *
 *******************************************************/

#include <stdio.h>

/*
 * 想要将类型T的数组作为参数进行传递，
 * 可以考虑传递“指向T的指针”。
 * 可是，作为被调用方是不知道数组的元素个数的，
 * 所以在必要的情况下，需要使用其他方式进行参数传递。
 */
void func(int *array, int size)
{
    int i;

	for(i = 0; i < size; i++) {
	    printf("array[%d]..%d \n", i, array[i]);
	}
}

int main()
{
    int array[] = {1, 2, 3, 4, 5};

	func(array, sizeof(array) / sizeof(int));

	return 0;
}
